package org.xiaov.consumer.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import org.xiaov.entity.po.UserPo;
import org.xiaov.framework.constant.ApiR;

import java.util.List;

/**
 * <p>
 * 描述：
 * </p>
 *
 * @author xiaovcloud
 * @since 2021/12/19 14:02
 */
@Component
@FeignClient("cloud-provider")
@RequestMapping("/provider")
public interface ProviderClient {

    /**
     * 获取所有用户
     *
     * @return 用户集合
     */
    @GetMapping
    ApiR<List<UserPo>> getAllUser();

    /**
     * 根据 id 获取用户
     *
     * @param id id
     * @return 用户
     */
    @GetMapping("/{id}")
    ApiR<UserPo> getUserById(@PathVariable("id") String id);

    /**
     * 保存用户
     *
     * @param userPo 用户信息
     * @return 返回ApiR<Boolean>
     */
    @PostMapping()
    ApiR<Boolean> saveUser(@RequestBody UserPo userPo);

    /**
     * 根据 id 修改用户
     *
     * @param userPo 用户信息
     * @return ApiR<Boolean>
     */
    @PutMapping()
    ApiR<Boolean> edit(@RequestBody UserPo userPo);

    /**
     * 根据id删除用户
     *
     * @param id id
     * @return ApiR<Boolean>
     */
    @DeleteMapping("/{id}")
    ApiR<Boolean> delete(@PathVariable("id") String id);

}
